const byte encoder0pinA = 2;	//A pin -> the interrupt pin 2
const byte encoder0pinB = 4;	//B pin -> the digital pin 4

byte encoder0PinALast;

int duration;	//the number of the pulses
boolean Direction;	//the rotation direction

void setup(){
	Serial.begin(57600);	//Initial the serial port
	EncoderInit();	//Initialize the module
}

void loop(){
	Serial.print("Pulse:");
	Serial.println(duration);
	duration = 0;
	delay(100);
}

void EncoderInit(){
	Direction = true;	//default->Forward
	pinMode(encoder0pinB, INPUT);
	attachInterrupt(0, wheelSpeed, CHANGE);	//int.0
}

void wheelSpeed(){
	int Lstate = digitalRead(encoder0pinA);
	if((encoder0PinALast == LOW)&&Lstate==HIGH){
		int val = digitalRead(encoder0pinB);
		if(val == LOW && Direction){
			Direction = false;
		}else if(val == HIGH && !Direction){
			Direction = true;
		}
	}
	encoder0PinALast = Lstate;
	if(!Direction)duration++;
	else duration--;
}

